home *** CD-ROM | disk | FTP | other *** search
- *** ../step3/supfilesrv.c Thu Dec 16 13:36:45 1993
- --- supfilesrv.c Thu Dec 16 15:00:32 1993
- ***************
- *** 341,348 ****
- --- 341,354 ----
- int argc;
- char **argv;
- {
- + #ifdef _ABI_SOURCE
- + register int x,pid;
- + sigset_t signalmask, oldsignalmask;
- + struct sigaction chldvec,ignvec,oldvec;
- + #else
- register int x,pid,signalmask;
- struct sigvec chldvec,ignvec,oldvec;
- + #endif
- int chldsig ();
- long tloc;
-
- ***************
- *** 371,376 ****
- --- 377,394 ----
- (void) serviceend ();
- exit (0);
- }
- + #ifdef _ABI_SOURCE
- + ignvec.sa_handler = SIG_IGN;
- + sigemptyset (&(ignvec.sa_mask));
- + ignvec.sa_flags = 0;
- + (void) sigaction (SIGHUP,&ignvec,&oldvec);
- + (void) sigaction (SIGINT,&ignvec,&oldvec);
- + (void) sigaction (SIGPIPE,&ignvec,&oldvec);
- + chldvec.sa_handler = chldsig;
- + sigemptyset (&(chldvec.sa_mask));
- + chldvec.sa_flags = 0;
- + (void) sigaction (SIGCHLD,&chldvec,&oldvec);
- + #else
- ignvec.sv_handler = SIG_IGN;
- ignvec.sv_onstack = 0;
- ignvec.sv_mask = 0;
- ***************
- *** 381,386 ****
- --- 399,405 ----
- chldvec.sv_mask = 0;
- chldvec.sv_onstack = 0;
- (void) sigvec (SIGCHLD,&chldvec,&oldvec);
- + #endif
- nchildren = 0;
- for (;;) {
- x = service ();
- ***************
- *** 389,395 ****
- --- 408,420 ----
- (void) servicekill ();
- continue;
- }
- + #ifdef _ABI_SOURCE
- + sigemptyset (&signalmask);
- + sigaddset (&signalmask, SIGCHLD);
- + (void) sigprocmask (SIG_BLOCK, &signalmask, &oldsignalmask);
- + #else
- signalmask = sigblock(sigmask(SIGCHLD));
- + #endif
- if ((pid = fork()) == 0) { /* server process */
- (void) serviceprep ();
- answer ();
- ***************
- *** 398,404 ****
- --- 423,433 ----
- }
- (void) servicekill (); /* parent */
- if (pid > 0) nchildren++;
- + #ifdef _ABI_SOURCE
- + (void) sigprocmask (SIG_SETMASK, &oldsignalmask, NULL);
- + #else
- (void) sigsetmask(signalmask);
- + #endif
- }
- }
-
-